package com.nidu.demo.auth.api;

import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.nidu.demo.auth.dto.*;

import javax.validation.Valid;

/**
 * 后端登录接口接口
 *
 * @author auto
 */
public interface SysOAuth2Service {

    /**
     * 账号登录
     *
     * @param cmd 登录信息
     * @return 登录结果
     */
    SingleResponse<AuthLoginCO> login(@Valid AuthLoginCmd cmd);

    /**
     * 基于 token 退出登录
     *
     * @param token token
     */
    Response logout(String token);

    /**
     * 短信验证码发送
     *
     * @param cmd 发送请求
     */
    Response sendSmsCode(AuthSmsSendCmd cmd);

    /**
     * 短信登录
     *
     * @param cmd 登录信息
     * @return 登录结果
     */
    SingleResponse<AuthLoginCO> smsLogin(AuthSmsLoginCmd cmd) ;

    /**
     * 社交快捷登录，使用 code 授权码
     *
     * @param cmd 登录信息
     * @return 登录结果
     */
    SingleResponse<AuthLoginCO> socialLogin(@Valid AuthSocialLoginCmd cmd);

    /**
     * 刷新访问令牌
     *
     * @param refreshToken 刷新令牌
     * @return 登录结果
     */
    SingleResponse<AuthLoginCO> refreshToken(String refreshToken);

    /**
     * 用户注册
     *
     * @param cmd 注册用户
     * @return 注册结果
     */
    SingleResponse<AuthLoginCO> register(AuthRegisterCmd cmd);

}
